0. input values: e.g.) 20231007, 18, 1156054000, 0.3¶

In [1]:
import df_generation ##truncation coeff: 0.1 ~ 0.3 권장 - 행정구역 규모가 클수록 크게
day?: 20231007
time?: 18
code?: 1156054000
truncation coeff?(0 ~ 1): 0.3

1.0 stay data¶

In [2]:
df=df_generation.df

1.1 stay data VIS(2D)¶

In [3]:
import pydeck as pdk
In [4]:
layer = pdk.Layer(
    'PolygonLayer', # 사용할 Layer 타입
    df, # 시각화에 쓰일 데이터프레임
    get_polygon='coordinates', # geometry 정보를 담고있는 컬럼 이름
    get_fill_color='[255, 255*(1-scaled_pop_density), 255*(1-scaled_pop_density)]', ## or scaled_pop
    get_line_color='[0, 0, 0]', # 각 데이터 별 rgb 또는 rgba 값 (0~255) [경계선]
    get_line_width=50, # 경계선 굵기
    pickable=True, # 지도와 interactive 한 동작 on
    auto_highlight=True # 마우스 오버(hover) 시 박스 출력
)

# Set the viewport location
center = [126.986, 37.565]
view_state = pdk.ViewState(
    longitude=center[0],
    latitude=center[1],
    zoom=10)

#마우스 오버시 툴팁 columns 출력
tooltip = {
    "text": "행정지: {name} \n행정동코드: {code} \n인구: {pop}"    
}

# Render
r = pdk.Deck(layers=[layer], initial_view_state=view_state, tooltip=tooltip)
r.show()
Out[4]:

1.2 stay data VIS(3D)¶

In [5]:
layer = pdk.Layer(
    'PolygonLayer', # 사용할 Layer 타입
    df, # 시각화에 쓰일 데이터프레임
    get_polygon='coordinates', # geometry 정보를 담고있는 컬럼 이름
    get_fill_color='[255, 255*(1-scaled_pop_density), 255*(1-scaled_pop_density)]', ## or scaled_pop
    get_line_color='[0, 0, 0]',
    pickable=True, # 지도와 interactive 한 동작 on
    auto_highlight=True, # 마우스 오버(hover) 시 박스 출력
    extruded= True, #3D plot
    get_elevation='scaled_pop_density', ## or scaled_pop
    elevation_scale=6000, #elevation scale
    wireframe=True #경계선 표시
)

view_state.bearing=15 #시점 좌우 각도
view_state.pitch=45 #시점 상하 각도

tooltip = {
    "text": "행정지: {name} \n행정동코드: {code} \n인구: {pop}"    
}

r = pdk.Deck(layers=[layer], initial_view_state=view_state, tooltip=tooltip)
r.show()
Out[5]:

2.0 od data¶

In [6]:
df_in=df_generation.df_in
df_out=df_generation.df_out
df_diff=df_generation.df_diff

2.1 od in VIS(2D)¶

In [7]:
layer = pdk.Layer(# od in data Line layer
    'LineLayer',
    df_in, # od in dataframe
    get_source_position='[from_lon, from_lat]', #from position
    get_target_position='[to_lon, to_lat]', #to position
    get_width ='3*trunc_scaled_pop', ## or scaled_pop
    get_color='[255*scaled_pop, 0, 0]',
    pickable=True, # interactive map
    auto_highlight=True, #mouse over
    highlight_color=[255, 255, 0] #mouse over color
)

layerP = pdk.Layer( #배경 행정구 그림
    'PolygonLayer', 
    df,
    get_polygon='coordinates',
    get_fill_color='[255, 255, 255]',
    get_line_color='[0, 0, 0]',
    get_line_width=100,
    opacity=0.1
)

center = [126.986, 37.565]
view_state = pdk.ViewState(
    longitude=center[0],
    latitude=center[1],
    zoom=10)

tooltip = {
    "text": "from: {from} \nto: {to} \npop: {pop}"    
}

r = pdk.Deck(layers=[layerP,layer], initial_view_state=view_state, tooltip=tooltip)
r.show()
Out[7]:

2.1 od out VIS(2D)¶

In [8]:
layer = pdk.Layer(
    'LineLayer',
    df_out,
    get_source_position='[from_lon, from_lat]',
    get_target_position='[to_lon, to_lat]',
    get_width ='3*trunc_scaled_pop', ## or scaled_pop
    get_color='[0, 0, 255*scaled_pop]',
    pickable=True,
    auto_highlight=True,
    highlight_color=[255, 255, 0]
)

center = [126.986, 37.565]
view_state = pdk.ViewState(
    longitude=center[0],
    latitude=center[1],
    zoom=10)

tooltip = {
    "text": "from: {from} \nto: {to} \npop: {pop}"    
}

r = pdk.Deck(layers=[layerP,layer], initial_view_state=view_state, tooltip=tooltip)
r.show()
Out[8]:

2.1 od diff VIS(2D)¶

In [9]:
layer = pdk.Layer(
    'LineLayer',
    df_diff,
    get_source_position='[from_lon, from_lat]',
    get_target_position='[to_lon, to_lat]',
    get_width ='3*trunc_abs_scaled_pop', ## or abs_scaled_pop 
    get_color='[255*scaled_pop_p, 0, 255*scaled_pop_m]', #차이의 절댓값에 굵기 비례, 차이가 양수일때 red 음수일때 blue
    pickable=True,
    auto_highlight=True,
    highlight_color=[255, 255, 0]
)

center = [126.986, 37.565]
view_state = pdk.ViewState(
    longitude=center[0],
    latitude=center[1],
    zoom=10)

tooltip = {
    "text": "from: {from} \nto: {to} \npop: {pop}"    
}

r = pdk.Deck(layers=[layerP,layer], initial_view_state=view_state, tooltip=tooltip)
r.show()
Out[9]:

2.2 od in VIS(3D)¶

In [10]:
layer = pdk.Layer(
    'ArcLayer',
    df_in,
    get_source_position='[from_lon, from_lat]',
    get_target_position='[to_lon, to_lat]',
    get_width ='3*trunc_scaled_pop', ## or scaled_pop
    get_source_color='[0, 0, 0]', #출발 rgb
    get_target_color='[255*scaled_pop, 0, 0]', #도착 rgb
    pickable=True,
    auto_highlight=True,
    highlight_color=[255, 255, 0]
)

center = [126.986, 37.565]
view_state = pdk.ViewState(
    longitude=center[0],
    latitude=center[1],
    zoom=10)

view_state.bearing = 15
view_state.pitch = 45

tooltip = {
    "text": "from: {from} \nto: {to} \npop: {pop}"    
}

r = pdk.Deck(layers=[layerP,layer], initial_view_state=view_state, tooltip=tooltip)
r.show()
Out[10]:

2.2 od out VIS(3D)¶

In [11]:
layer = pdk.Layer(
    'ArcLayer',
    df_out,
    get_source_position='[from_lon, from_lat]',
    get_target_position='[to_lon, to_lat]',
    get_width ='3*trunc_scaled_pop', ## or scaled_pop
    get_source_color='[0, 0, 0]',
    get_target_color='[0, 0, 255*scaled_pop]',
    pickable=True,
    auto_highlight=True,
    highlight_color=[255, 255, 0]
)

center = [126.986, 37.565]
view_state = pdk.ViewState(
    longitude=center[0],
    latitude=center[1],
    zoom=10)

view_state.bearing = 15
view_state.pitch = 45

tooltip = {
    "text": "from: {from} \nto: {to} \npop: {pop}"    
}

r = pdk.Deck(layers=[layerP,layer], initial_view_state=view_state, tooltip=tooltip)
r.show()
Out[11]:

2.2 od diff VIS(3D)¶

In [12]:
layer = pdk.Layer(
    'ArcLayer',
    df_diff,
    get_source_position='[from_lon, from_lat]',
    get_target_position='[to_lon, to_lat]',
    get_width ='3*trunc_abs_scaled_pop', ## or abs_scaled_pop
    get_source_color='[0, 0, 255*scaled_pop_m]',
    get_target_color='[255*scaled_pop_p, 0, 0]',
    pickable=True,
    auto_highlight=True,
    highlight_color=[255, 255, 0]
)

center = [126.986, 37.565]
view_state = pdk.ViewState(
    longitude=center[0],
    latitude=center[1],
    zoom=10)

view_state.bearing = 15
view_state.pitch = 45

tooltip = {
    "text": "from: {from} \nto: {to} \npop: {pop}"    
}

r = pdk.Deck(layers=[layerP,layer], initial_view_state=view_state, tooltip=tooltip)
r.show()
Out[12]: